package com.anosine.gpsl.android.base;

import com.umeng.analytics.MobclickAgent;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

/**
 * @Title: BaseActivity
 * @Package com.anosine.gpsl.android.base
 * @Description: 其他activity需要继承的基础类
 * @author: sunny
 * @date: 2015-11-18
 * @version V1.0
 */

public abstract class BaseActivity extends FragmentActivity implements ILoading {
	private Loading mLoading;

	/**
	 * @Title: onCreate(Bundle savedInstanceState)
	 * @Description: 初始化BaseActivity
	 * @param: savedInstanceState Activity结束前，如果需要保存状态，
	 *         就在onsaveInstanceState中，将状态数据以key-value的形式放入到savedInstanceState中。
	 *         这样，当一个Activity被创建时，就能从onCreate的参数savedInsanceState中获得状态数据
	 * @return: 无
	 * @throws
	 */
	@Override
	protected final void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mLoading = initLoading();
		onBaseCreate(savedInstanceState);
		initViews();
	}

	/**
	 * @Title: onBaseCreate(Bundle savedInstanceState)
	 * @Description: onBaseCreate 接口，在activity中重写 Activity结束前，如果需要保存状态，
	 *               就在onsaveInstanceState中
	 *               ，将状态数据以key-value的形式放入到savedInstanceState中。
	 *               这样，当一个Activity被创建时，就能从onCreate的参数savedInsanceState中获得状态数据
	 * @param: savedInstanceState
	 * @return: 无
	 * @throws
	 */

	protected abstract void onBaseCreate(Bundle savedInstanceState);

	/**
	 * @Title: onBaseCreate(Bundle savedInstanceState)
	 * @Description: 初始化view 接口
	 * @param: 无
	 * @return: 无
	 * @throws
	 */
	protected abstract void initViews();

	/**
	 * @Title: getLoadingContext()
	 * @Description: 获取加载的上下文
	 * @param: 无
	 * @return: Context
	 * @throws
	 */

	@Override
	public final Context getLoadingContext() {
		return this;
	}

	/**
	 * @Title: getLoading()
	 * @Description: 获取mLoading
	 * @param: 无
	 * @return: Loading 进度条界面
	 * @throws
	 */

	@Override
	public final Loading getLoading() {
		return mLoading;
	}

	/**
	 * @Title: initLoading()
	 * @Description: 初始化loading
	 * @param: 无
	 * @return: Loading 进度条界面
	 * @throws
	 */

	@Override
	public final Loading initLoading() {
		return new Loading(this);
	}

	/**
	 * @Title: onResume()
	 * @Description: Activity第一次创建时 ，重新加载实例时调用
	 * @param: 无
	 * @return: 无
	 * @throws
	 */

	@Override
	protected void onResume() {
		super.onResume();
		// MobclickAgent是youmeng统计SDK里的一个类，提供一些静态方法用于统计终端应用的用户行为
		// 常见的有在Resume和Pause过程中调用，MobclickAgent会记录用户进入了应用的那个页面
		MobclickAgent.onResume(this);
	}

	/**
	 * @Title: onPause()
	 * @Description: Activity有活动状态变为非活动状态
	 * @param: 无
	 * @return: 无
	 * @throws
	 */

	@Override
	protected void onPause() {
		super.onPause();
		MobclickAgent.onPause(this);
	}

	/**
	 * @Title: showProgressInfo(final String s)
	 * @Description: mLoading显示的文本内容
	 * @param: String s
	 * @return: 无
	 * @throws
	 */

	public final void showProgressInfo(final String s) {
		if (mLoading != null) {
			mLoading.show(s);
		}
	}

	/**
	 * @Title: dismissProgress()
	 * @Description: mLoading消失
	 * @param: 无
	 * @return: 无
	 * @throws
	 */

	public final void dismissProgress() {
		if (mLoading != null) {
			mLoading.dismiss();
		}
	}

}
